package com.xm;

class OuterClass {
    int x = 10;

    // 内部类
    class InnerClass {
        int y = 5;

        public int innerMethod() {
            return x;
        }
    }

    // 私有内部类
    private class InnerClass2 {
        int z = 3;
    }

    // 静态内部类
    static class InnerClass3 {
        int zz = 2;
    }
}

public class OuterInnerClass {
    public static void main(String[] args) {
        OuterClass outerclass = new OuterClass();
        OuterClass.InnerClass innerclass = outerclass.new InnerClass();
        System.out.println(outerclass.x + innerclass.y);

        // 静态内部类    注：静态内部类无法访问外部类的成员。
        OuterClass.InnerClass3 innerClass3 = new OuterClass.InnerClass3();
        System.out.println(innerClass3.zz + innerclass.y);

        // 内部类可以访问外部类的属性和方法
        System.out.println(innerclass.innerMethod());
    }
}

